/**
 * Copyright 2025 Beijing Volcano Engine Technology Co., Ltd. All Rights Reserved.
 * SPDX-license-identifier: BSD-3-Clause
 */

/**
 * 从 .env.local 中加载环境变量到 window 对象
 * React 应用中的环境变量通常以 REACT_APP_ 开头
 */
export const loadEnvVariables = async (): Promise<void> => {
  try {
    console.log('开始从服务器加载环境变量...');
    // 发送请求到服务器获取环境变量
    const response = await fetch('http://localhost:3001/env');
    if (!response.ok) {
      throw new Error('无法从服务器加载环境变量');
    }
    
    const env = await response.json();
    console.log('从服务器加载的环境变量:');
    
    // 打印关键参数信息（前几位字符）
    if (env.AppId) console.log('AppId:', env.AppId);
    if (env.RoomId) console.log('RoomId:', env.RoomId);
    if (env.UserId) console.log('UserId:', env.UserId);
    if (env.Token) {
      console.log('Token 前10位:', env.Token.substring(0, 10), '长度:', env.Token.length);
    } else {
      console.log('Token 未设置!');
    }
    
    // 将从服务器获取的环境变量设置到 window 对象
    if (env.DOUBAO_PRO_32K) {
      (window as any).__REACT_APP_DOUBAO_PRO_32K = env.DOUBAO_PRO_32K;
      console.log('DOUBAO_PRO_32K 设置完成');
    }
    
    // 设置 RTC 相关配置
    if (env.AppId) {
      (window as any).__REACT_APP_APPID = env.AppId;
      console.log('AppId 设置完成:' + env.AppId);
    }
    
    if (env.RoomId) {
      (window as any).__REACT_APP_ROOMID = env.RoomId;
      console.log('RoomId 设置完成:' + env.RoomId);
    }
    
    if (env.UserId) {
      (window as any).__REACT_APP_USERID = env.UserId;
      console.log('UserId 设置完成:' + env.UserId);
    }
    
    if (env.Token) {
      (window as any).__REACT_APP_TOKEN = env.Token;
      console.log('Token 设置完成: ' + env.Token.substring(0, 10) + '...');
    } else {
      console.error('Token 缺失! 这可能会导致 RTC 连接失败');
    }
    
    if (env.TTSAppId) {
      (window as any).__REACT_APP_TTS_APP_ID = env.TTSAppId;
      console.log('TTSAppId 设置完成');
    }
    
    if (env.TTSToken) {
      (window as any).__REACT_APP_TTS_TOKEN = env.TTSToken;
      console.log('TTSToken 设置完成');
    }
    
    if (env.ASRAppId) {
      (window as any).__REACT_APP_ASR_APP_ID = env.ASRAppId;
      console.log('ASRAppId 设置完成');
    }
    
    if (env.ASRToken) {
      (window as any).__REACT_APP_ASR_TOKEN = env.ASRToken;
      console.log('ASRToken 设置完成');
    }
    
    console.log('所有环境变量设置完成');
    return Promise.resolve();
  } catch (error) {
    console.error('加载环境变量失败:', error);
    return Promise.reject(error);
  }
};
